home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
QRZ! Ham Radio 8
/
QRZ Ham Radio Callsign Database - Volume 8.iso
/
mac
/
files
/
dsp
/
56000tar.z
/
56000tar
/
56000
/
flts
/
iir3.hlp
< prev
next >
Wrap
Text File
|
1991-11-26
|
3KB
|
80 lines
2 IIR3
Name: IIR3.ASM
Type: Assembler Macro
Version: 1.0
Date Entered: 15-Jul-87
Last Change: 15-Jul-87
Description: Direct Form Arbitrary Order All Pole Filter
To implement a direct form all pole filter with an arbitrary
number of coefficients, looped code is used. An example
of an all pole IIR filter (N=5) is shown in below.
Input
>----------(+)------------------------> Output
x(n) ^ | y(n)
| a(1) 1/z
(+)<-- 0.8 -----|
^ |
| a(2) 1/z
(+)<-- -0.7 ----|
^ |
| a(3) 1/z
(+)<-- 0.6 ----|
^ |
| a(4) 1/z
(+)<-- -0.5 ----|
^ |
| a(5) 1/z
(+)<-- 0.4 ----|
Direct Form All Pole IIR Filter
The values for the coefficients are arbitrary. This
filter is described by the difference equation:
y(n)= x(n) + a(1)y(n-1) + a(2)y(n-2) + ... + a(r)y(n-r)
with z transform:
Y(z) 1
------- = --------------------------------------
X(z) -1 -2 -r
1 - a(1)z - a(2)z ... - a(r)z
where:
x(n) = input sample at time nT
y(n) = output of the filter at time nT
a(n) = filter coefficient n (magnitude less than one)
T = sample period
r = number of coefficients
This filter is efficiently implemented by using modulo
addressing and multiple address pointers, similar to the IIR1
macro.
For the above filter, the memory map for the filter
coefficients and state variables (past output samples
is shown below.
r0 m0=ncoef-1 (=4, mod 5)
|
v
------------------------------------
X: |y(n) |y(n-1)|y(n-2)|y(n-3)|y(n-4)| Filter States
------------------------------------
------------------------------------
Y: | a(1)| a(2) | a(3) | a(4) | a(5) |
| .8 | -.7 | .6 | -.5 | .4 |
------------------------------------
^
|
r4 m4=ncoef-1 (=4, mod 5)
Memory Map for the Direct Form Canonic Filter
For an example of how to use this filter, see the test program IIR3T.ASM